<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数</title>
    <script>
        /*
            创建一个Person构造函数
                在Person构造函数中，为每一个对象都添加了一个sayName方法
                也是所有实例的sayName都是唯一的
                这样就导致了构造函数执行一次就会创建一个新的方法，
                    执行10000次就会创建10000个新的方法，而10000个方法都是一模一样的
                    这是完全没有必要，完全可以使所有的对象共享同一个方法
        */

        function Person(name,age,gender){
            this.name = name;
            this.age = age;
            this.gender = gender;
            // 向对象中添加一个方法
            //this.sayName = fun;
        }
        // 将sayName方法在全局作用域中定义
        /*
            将函数定义在全局作用域，污染了全局作用域的命名空间
                而且定义在全局作用域中也很不安全
        */
        // function fun(){
        //     alert("Hello大家好，我是:"+this.name);
        // }
        // 向原型中添加sayName方法
        Person.prototype.sayName = function(){
            alert("Hello大家好，我是:"+this.name);
        };

        var per = new Person("孙悟空",18,"男");
        var per2 = new Person("猪八戒",28,"男");
        per.sayName();
        per2.sayName();

        console.log(per.sayName == per2.sayName);
    </script>
</head>
<body>
    
</body>
</html>